#ifndef GRAPHIC_MANAGER_H
#define GRAPHIC_MANAGER_H

#include <CEGUI.h>
#include <CEGUIOgreRenderer.h>
#include <Ogre.h>
#include <OIS/OIS.h>
#include "../CustomFrameListener.h"
#include "../CustomInputManager/CustomInputManager.h"

class GraphicManager
{
public:
    static const Ogre::String DEFAULT_SCENEMANAGER;
    static const Ogre::String RESOURCES_CFG;
    static const Ogre::String WINDOW_NAME;
    static const Ogre::String DEFAULT_SCHEME;
    static const Ogre::String DEFAULT_IMAGESET_MOUSE;
    static const Ogre::String DEFAULT_IMAGENAME_MOUSE;
    static const Ogre::String DEFAULT_FONT;
    static const int WINDOW_WIDTH;
    static const int WINDOW_HEIGHT;
    static const int DEFAULT_NUM_MIP_MAPS;

    GraphicManager();
    ~GraphicManager();
private:
    CEGUI::OgreRenderer* renderer;

    void init();
    void defineResources();
    void setupRenderSystem();
    void createRenderWindow();
    void initializeResourcesGroups();
    void setupScene();
    void setupCEGUI();
    void createFrameListener();

};

#endif